package model;

/**
 * The {@link WindowEvent} class contains a {@link Window} and 
 * provides a visitor accept method.
 *
 */
public abstract class WindowEvent {

	private final Window window;

	public Window getWindow() {
		return window;
	}
	/**
	 * Construcor of {@link WindowEvent}.
	 * @param window is the {@link Window} that sends this {@link WindowEvent}.
	 */
	public WindowEvent(final Window window) {
		this.window = window;
	}

	/**
	 * Accept method to distinguish between {@link WindowEvent} implementations.
	 * @param windowEventVisitor is the visitor.
	 */
	public abstract void accept(WindowEventVisitor windowEventVisitor);

}
